﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LX.Web.Excel;

namespace S4Store.Domain.Report
{
    public class SellerReport : SellerCommonReport
    {
        [Export("合计标题", Colspan = 1)]
        public string HjTitle
        {
            get
            {
                return "合计";
            }
        }

        public SellerReport()
        {
            SellerReports = new List<SellerPersonReport>();
        }
        public List<SellerPersonReport> SellerReports { get; set; }

        public int SellerCount
        {
            get
            {
                return SellerReports.Count;
            }
        }

        public int SellerBrandCount
        {
            get
            {
                return SellerReports.Sum(t => t.BrandReports.Count);
            }
        }

        /// <summary>
        /// 月初尚存意向客户数
        /// </summary>
        [Export("月初尚存意向客户数")]
        public override int LastMonthPotentialClient
        {
            get
            {
                return SellerReports.Sum(t => t.LastMonthPotentialClient);
            }
        }
        /// <summary>
        /// 累计订单数
        /// </summary>
        [Export("订单数")]
        public override int OrderCount
        {
            get
            {
                return SellerReports.Sum(t => t.OrderCount);
            }
        }
        /// <summary>
        /// 累计交车数
        /// </summary>
        [Export("交车数")]
        public override int SaleCount
        {
            get
            {
                return SellerReports.Sum(t => t.SaleCount);
            }
        }
        /// <summary>
        /// 销售目标
        /// </summary>
        [Export("销售目标")]
        public override int SaleTarget
        {
            get
            {
                return SellerReports.Sum(t => t.SaleTarget);
            }
        }
        /// <summary>
        /// 首   次   来   店  客   户   登   记   数
        /// </summary>
        [Export("首次来店客户登记数")]
        public override int SCLDKHDJS
        {
            get { return SellerReports.Sum(t => t.SCLDKHDJS); }
        }


        /// <summary>
        /// 首   次   来   店  接   待   批   次
        /// </summary>
        [Export("首次来店接待批次")]
        public override int LDJDPC
        {
            get { return SellerReports.Sum(t => t.LDJDPC); }
        }

        ///// <summary>
        ///// 首次来店登记率
        ///// </summary>
        //public override decimal SCLDDJLV
        //{
        //    get
        //    {

        //        return SellerReports.AverageOrDefault(t => t.SCLDDJLV);
        //    }
        //}
        /// <summary>
        /// 试  驾  邀  请  书  填  写  数
        /// </summary>
        [Export("试驾邀请书填写数")]
        public override int SJYQSTXS
        {
            get
            {

                return SellerReports.Sum(t => t.SJYQSTXS);
            }
        }
        ///// <summary>
        ///// 试乘试驾率
        ///// </summary>
        //public override decimal SCSJLV
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.SCSJLV);
        //    }
        //}
        /// <summary>
        /// 试  驾  客  户   成   交   数
        /// </summary>
        [Export("试驾客户未成交数")]
        public override int SJKHCJS
        {
            get
            {
                return SellerReports.Sum(t => t.SJKHCJS);
            }
        }

        ///// <summary>
        ///// 试乘试驾成交率
        ///// </summary>
        //public override decimal SCSJCJLV
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.SCSJCJLV);
        //    }
        //}
        ///// <summary>
        ///// 登记客户成交率
        ///// </summary>
        //public override decimal DJKHCJLV
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.DJKHCJLV);
        //    }
        //}
        /// <summary>
        /// 上月遗留客户新增订单
        /// </summary>
        [Export("上月遗留客户新增订单")]
        public override int SYYLKHXZDD
        {
            get
            {
                return SellerReports.Sum(t => t.SYYLKHXZDD);
            }
        }
        ///// <summary>
        ///// 上月客户转化率
        ///// </summary>
        //public override decimal SYKHZHLV
        //{
        //    get
        //    {

        //        return SellerReports.AverageOrDefault(t => t.SYKHZHLV);
        //    }
        //}
        /// <summary>
        /// 超   限   价   格   成   交   数
        /// </summary>
        [Export("超限价格成交数")]
        public override int CXJGCJS
        {
            get
            {
                return SellerReports.Sum(t => t.CXJGCJS);
            }
        }
        ///// <summary>
        ///// 超限价格成交率
        ///// </summary>
        //public override decimal CXJGCJLV
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.CXJGCJLV);
        //    }
        //}
        /// <summary>
        /// 首   次   来   店登记数目  标
        /// </summary>
        [Export("首次来店登记数目标")]
        public override int SCLDDJMB
        {
            get
            {
                return SellerReports.Sum(t => t.SCLDDJMB);
            }
        }

        /// <summary>
        /// 首次来店接待目标
        /// </summary>
        [Export("首次来电接待目标")]
        public override decimal SCLDJDMB
        {
            get
            {
                if (SellerKpiMonthConfig.LastMonthAvgvr == 0) return 0;
                return ((SaleTarget / (SellerKpiMonthConfig.LastMonthAvgvr / 100)) / (SellerPerformanceStandard.SCLDDJLV / 100)).AutoRound1();
            }
        }

        /// <summary>
        /// 首次来电话接待目标
        /// </summary>
        public override decimal SCLDHJDMB
        {
            get
            {
                if (SellerKpiMonthConfig.LastMonthAvgvr == 0 || SellerPerformanceStandard.DHZLDDLV==0) return 0;
                return ((SaleTarget / (SellerKpiMonthConfig.LastMonthAvgvr / 100)) / (SellerPerformanceStandard.DHZLDDLV / 100)).AutoRound1();
            }
        }


        /// <summary>
        /// 有效  A   卡   建卡   数
        /// </summary>
        [Export("有效A卡建卡数")]
        public override decimal YXAKJKS
        {
            get
            {
                return SellerReports.Sum(t => t.YXAKJKS);
            }
        }
        /// <summary>
        /// 商   谈   明   细   表   填   写   数
        /// </summary>
        [Export("商谈明细表填写数")]
        public override decimal STMXBTXS
        {
            get
            {
                return SellerReports.Sum(t => t.STMXBTXS);
            }
        }
        /// <summary>
        /// 二 手 车 评 估 数
        /// </summary>
        [Export("二手车评估数")]
        public override decimal ESCPGS
        {
            get
            {
                return SellerReports.Sum(t => t.ESCPGS);
            }
        }
        /// <summary>
        /// 置 换 成 交 数
        /// </summary>
        [Export("置换成交数")]
        public override decimal ZHCJS
        {
            get
            {
                return SellerReports.Sum(t => t.ZHCJS);
            }
        }
        /// <summary>
        /// 按 揭 成 交 数
        /// </summary>
        [Export("按揭成交数")]
        public override decimal AJCJS
        {
            get
            {
                return SellerReports.Sum(t => t.AJCJS);
            }
        }
        /// <summary>
        /// 当月客户新增订单数
        /// </summary>
        [Export("当月客户新增订单数")]
        public override decimal DYKHXZDD
        {
            get
            {
                return SellerReports.Sum(t => t.DYKHXZDD);
            }
        }
        /// <summary>
        /// 新   车   保   险   投   保  数
        /// </summary>
        [Export("新车保险投保数")]
        public override decimal XCBXTBS
        {
            get
            {
                return SellerReports.Sum(t => t.XCBXTBS);
            }
        }
        /// <summary>
        /// 保       险       销       售       总      额
        /// </summary>
        [Export("保险销售额")]
        public override decimal BXXSE
        {
            get
            {
                return SellerReports.Sum(t => t.BXXSE);
            }
        }
        /// <summary>
        /// 套   餐    车 销   售  数   量
        /// </summary>
        [Export("套餐车销售数量")]
        public override decimal TCCXSSL
        {
            get
            {
                return SellerReports.Sum(t => t.TCCXSSL);
            }
        }
        /// <summary>
        /// 有   效  装 潢   车   销   售   数   量
        /// </summary>
        [Export("有效装潢车销售数量")]
        public override decimal YXZHCXSSL
        {
            get
            {
                return SellerReports.Sum(t => t.YXZHCXSSL);
            }
        }
        /// <summary>
        /// 装   潢   车     装     潢     销     售          额    （万）
        /// </summary>
        [Export("装潢销售额")]
        public override decimal ZHCZHXSE
        {
            get
            {
                return SellerReports.Sum(t => t.ZHCZHXSE);
            }
        }
        /// <summary>
        /// 新 车 延 保 数
        /// </summary>
        [Export("新车延保数")]
        public override decimal XCYBS
        {
            get
            {
                return SellerReports.Sum(t => t.XCYBS);
            }
        }
        /// <summary>
        /// 二次   成  功   邀   约   客  户  数
        /// </summary>
        [Export("二次成功邀约客户数")]
        public override decimal ECCGYYKHS
        {
            get
            {
                return SellerReports.Sum(t => t.ECCGYYKHS);
            }
        }
        /// <summary>
        /// 当   月      老 客   户   推   荐  成   交 数
        /// </summary>
        [Export("老客户推荐成交数")]
        public override decimal DYLKHTJCJS
        {
            get
            {
                return SellerReports.Sum(t => t.DYLKHTJCJS);
            }
        }
        ///// <summary>
        ///// 销量完成进度
        ///// </summary>
        //public override decimal XLWCD
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.XLWCD);
        //    }
        //}
        ///// <summary>
        ///// 来店批次完成进度
        ///// </summary>
        //public override decimal LDPCWCD
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.LDPCWCD);
        //    }
        //}
        ///// <summary>
        ///// 来店批次进度差
        ///// </summary>
        //public override decimal LDPCJDC
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.LDPCJDC);
        //    }
        //}
        ///// <summary>
        ///// 当月登记客户完成进度
        ///// </summary>
        //public override decimal DJKHWCJD
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.DJKHWCJD);
        //    }
        //}
        ///// <summary>
        ///// A   卡需 求 完整分 析 率
        ///// </summary>
        //public override decimal AKXQWZFXLV
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.AKXQWZFXLV);
        //    }
        //}
        ///// <summary>
        ///// 商 谈 明 细 表 填 写 率
        ///// </summary>
        //public override decimal STMXBTXLV
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.STMXBTXLV);
        //    }
        //}
        ///// <summary>
        ///// 当月登 记 客 户 成 交 率
        ///// </summary>
        //public override decimal DYDJKHCJLV
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.DYDJKHCJLV);
        //    }
        //}
        ///// <summary>
        ///// 订单交车转化率
        ///// </summary>
        //public override decimal DDJCZHLV
        //{
        //    get
        //    {
        //        return SellerReports.Where(t => t.JCS > 0).AverageOrDefault(t => t.DDJCZHLV);
        //    }
        //}
        ///// <summary>
        ///// 当月二手车评估率
        ///// </summary>
        //public override decimal ESCPGLV
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.ESCPGLV);
        //    }
        //}
        ///// <summary>
        ///// 当月置换率
        ///// </summary>
        //public override decimal ZHLV
        //{
        //    get
        //    {
        //        return SellerReports.Where(t => t.JCS > 0).AverageOrDefault(t => t.ZHLV);
        //    }
        //}
        ///// <summary>
        ///// 当 月 保 险 率
        ///// </summary>
        //public override decimal BXLV
        //{
        //    get
        //    {
        //        return SellerReports.Where(t => t.JCS > 0).AverageOrDefault(t => t.BXLV);
        //    }
        //}
        ///// <summary>
        ///// 当月按揭成交率
        ///// </summary>
        //public override decimal AJCJLV
        //{
        //    get
        //    {
        //        return SellerReports.Where(t => t.JCS > 0).AverageOrDefault(t => t.AJCJLV);
        //    }
        //}
        ///// <summary>
        ///// 套餐车 销 售 率
        ///// </summary>
        //public override decimal TCCXSLV
        //{
        //    get
        //    {
        //        return SellerReports.Where(t => t.JCS > 0).AverageOrDefault(t => t.TCCXSLV);
        //    }
        //}
        ///// <summary>
        ///// 有效装潢车销售率
        ///// </summary>
        //public override decimal YXZHCXSLV
        //{
        //    get
        //    {
        //        return SellerReports.Where(t => t.JCS > 0).AverageOrDefault(t => t.YXZHCXSLV);
        //    }
        //}
        ///// <summary>
        ///// 新车延保实现率
        ///// </summary>
        //public override decimal XCYBSXLV
        //{
        //    get
        //    {
        //        return SellerReports.Where(t=>t.JCS>0).AverageOrDefault(t => t.XCYBSXLV);
        //    }
        //}
        ///// <summary>
        ///// 二 次  邀 约 成 功 率
        ///// </summary>
        //public override decimal ECYYCGLV
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.ECYYCGLV);
        //    }
        //}
        ///// <summary>
        ///// 老 客 户  推 荐 成 功 率
        ///// </summary>
        //public override decimal LKHTJCGLV
        //{
        //    get
        //    {
        //        return SellerReports.AverageOrDefault(t => t.LKHTJCGLV);
        //    }
        //}
    }
}
